package br.edu.infnet.avaliacao.model;

import java.util.HashSet;
import java.util.Set;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.Id;
import javax.persistence.OneToMany;
import javax.persistence.Table;

@Entity
@Table(name = "questionario", catalog = "avaliacao")
public class Questionario implements java.io.Serializable {

	private static final long serialVersionUID = 5212858345339084826L;
	private String id;
	private String objetivo;
	private Set<Agendamento> agendamentos = new HashSet<Agendamento>(0);
	private Set<DivisaoQuestionario> divisaoQuestionarios = new HashSet<DivisaoQuestionario>(
			0);
	private Set<Avaliacao> avaliacaos = new HashSet<Avaliacao>(0);

	public Questionario() {
	}

	public Questionario(String id, String objetivo) {
		this.id = id;
		this.objetivo = objetivo;
	}

	public Questionario(String id, String objetivo,
			Set<Agendamento> agendamentos,
			Set<DivisaoQuestionario> divisaoQuestionarios,
			Set<Avaliacao> avaliacaos) {
		this.id = id;
		this.objetivo = objetivo;
		this.agendamentos = agendamentos;
		this.divisaoQuestionarios = divisaoQuestionarios;
		this.avaliacaos = avaliacaos;
	}

	@Id
	@Column(name = "id", nullable = false, length = 20)
	public String getId() {
		return this.id;
	}

	public void setId(String id) {
		this.id = id;
	}

	@Column(name = "objetivo", nullable = false, length = 200)
	public String getObjetivo() {
		return this.objetivo;
	}

	public void setObjetivo(String objetivo) {
		this.objetivo = objetivo;
	}

	@OneToMany(fetch = FetchType.LAZY, mappedBy = "questionario")
	public Set<Agendamento> getAgendamentos() {
		return this.agendamentos;
	}

	public void setAgendamentos(Set<Agendamento> agendamentos) {
		this.agendamentos = agendamentos;
	}

	@OneToMany(fetch = FetchType.LAZY, mappedBy = "questionario")
	public Set<DivisaoQuestionario> getDivisaoQuestionarios() {
		return this.divisaoQuestionarios;
	}

	public void setDivisaoQuestionarios(
			Set<DivisaoQuestionario> divisaoQuestionarios) {
		this.divisaoQuestionarios = divisaoQuestionarios;
	}

	@OneToMany(fetch = FetchType.LAZY, mappedBy = "questionario")
	public Set<Avaliacao> getAvaliacaos() {
		return this.avaliacaos;
	}

	public void setAvaliacaos(Set<Avaliacao> avaliacaos) {
		this.avaliacaos = avaliacaos;
	}

}
